package gomz.pres;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import gomz.ClientToServerCon;
import gomz.GlobalRes;
import gomz.res.User;

/**
 * Model Klasse fuer die User Registration
 * @author Neuenschwander
 *
 * 
 */ 

//Diese Klasse wird ebenfalls von MVerwaltung verwendet
	public class MUser {
	
//********************************************************************************
// Variablen
// ********************************************************************************
	ClientToServerCon con = GlobalRes.getCon();

// ********************************************************************************
// Methoden
// ********************************************************************************
    /**
     * Diese Methode speichert einen neuen Benutzer 
     * @param userName Username des Benutzers
     * @param password Passwort des Benutzers
     * @param firstName Vorname des Benutzers
     * @param lastName Nachname des Benutzers
     * @param mail Mailadresse des Benutzers 
     * @param lang Sprache des Benutzers (1 = Deutsch, 2 = English)
     * @param isAdmin Boolean ob User admin ist (1 = True, 2 = False)
    */
	public boolean doSave(String userName, char[] password, String firstName, String lastName, String mail, int lang){
		boolean re = false;
		User reUser = doSave(0, userName, password, firstName, lastName, mail, lang, false);
		if(reUser!=null)	re = true;
		else				re = false;
		return re;
	}
    /**
     * Diese Methode speichert einen neuen Benutzer 
     * @param userId ID des Benutzers
     * @param userName Username des Benutzers
     * @param password Passwort des Benutzers
     * @param firstName Vorname des Benutzers
     * @param lastName Nachname des Benutzers
     * @param mail Mailadresse des Benutzers 
     * @param lang Sprache des Benutzers (1 = Deutsch, 2 = English)
     * @param isAdmin Boolean ob User admin ist (1 = True, 2 = False)
    */
	public User doSave(int userId, String userName, char[] password, String firstName, String lastName, String mail, int lang, boolean isAdmin){
		User reUser = null;
		//Passwort Verschluesselung
		MessageDigest md;
		StringBuffer sb = null;
		try {
			md = MessageDigest.getInstance("MD5");
			md.update(new String(password).getBytes());
			byte[] digest = md.digest();
			sb = new StringBuffer();
			for (byte b : digest) {
				sb.append(Integer.toHexString((int) (b & 0xff)));
			}
		} catch (NoSuchAlgorithmException e) {
			return null;
		}
		//User erstellen und alle Daten setzen
		User user = new User();
		user.setId(userId);
		user.setUsername(userName);
		user.setPassword(sb.toString());
		user.setVorname(firstName);
		user.setNachname(lastName);
		user.seteMail(mail);
		user.setLanguage(lang+1);
		user.setAdmin(isAdmin);
		
		//Wenn Passwort und Username nicht leer sind
		if (sb!=null && !userName.equals("")){
			//User auf Datenbank speichern
			reUser = con.userSave(user);
			//und User zurueckgeben
			return (reUser);
		}
		//Sonst Null zurueckgeben
		else{
			return null;
		}
	}
}
